["(" ")" "[" "]" "{" "}"] @punctuation.bracket

[(string)
 (here_string)
 (byte_string)] @string
(regex) @string.special
(escape_sequence) @escape

[(comment)
 (block_comment)
 (sexp_comment)] @comment

(number) @number
(character) @constant.builtin
(boolean) @constant.builtin
(keyword) @constant
(quote . (symbol)) @constant
(quote
  .
  (list
    .
    (symbol)* @variable))

(extension) @keyword
(lang_name) @variable.builtin

((symbol) @operator
 (#match? @operator "^(\\+|-|\\*|/|=|>|<|>=|<=)$"))

(list
  .
  (symbol) @keyword
  (#match? @keyword
   "^(unit-from-context|for/last|syntax-case|match-let\\*-values|define-for-syntax|define/subexpression-pos-prop|set-field!|class-field-accessor|invoke-unit|#%stratified-body|for\\*/and|for\\*/weak-set|flat-rec-contract|for\\*/stream|planet|for/mutable-seteqv|log-error|delay|#%declare|prop:dict/contract|->d|lib|override\\*|define-local-member-name|send-generic|for\\*/hasheq|define-syntax|submod|except|include-at/relative-to/reader|public\\*|define-member-name|define/public|let\\*|for/and|for\\*/first|for|delay/strict|define-values-for-export|==|match-define-values|for/weak-seteq|for\\*/async|for/stream|for/weak-seteqv|set!-values|lambda|for\\*/product|augment-final\\*|pubment\\*|command-line|contract|case|struct-field-index|contract-struct|unless|for/hasheq|for/seteqv|with-method|define-values-for-syntax|for-template|pubment|for\\*/list|syntax-case\\*|init-field|define-serializable-class|=>|for/foldr/derived|letrec-syntaxes|overment\\*|unquote-splicing|_|inherit-field|for\\*|stream-lazy|match-lambda\\*|contract-pos/neg-doubling|unit/c|match-define|for\\*/set|unit/s|nor|#%expression|class/c|this%|place/context|super-make-object|when|set!|parametric->/c|syntax-id-rules|include/reader|compound-unit|override-final|get-field|gen:dict|for\\*/seteqv|for\\*/hash|#%provide|combine-out|link|with-contract-continuation-mark|define-struct/derived|stream\\*|λ|rename-out|define-serializable-class\\*|augment|define/augment|let|define-signature-form|letrec-syntax|abstract|define-namespace-anchor|#%module-begin|#%top-interaction|for\\*/weak-seteqv|do|define/subexpression-pos-prop/name|absent|send/apply|with-handlers\\*|all-from-out|provide-signature-elements|gen:stream|define/override-final|for\\*/mutable-seteqv|rename|quasisyntax/loc|instantiate|for/list|extends|include-at/relative-to|mixin|define/pubment|#%plain-lambda|except-out|#%plain-module-begin|init|for\\*/last|relative-in|define-unit/new-import-export|->dm|member-name-key|nand|interface\\*|struct|define/override|else|define/augment-final|failure-cont|open|log-info|define/final-prop|all-defined-out|for/sum|for\\*/sum|recursive-contract|define|define-logger|match\\*|log-debug|rename-inner|->|struct/derived|unit|class\\*|prefix-out|any|define/overment|define-signature|match-letrec-values|let-syntaxes|for/mutable-set|define/match|cond|super-instantiate|define-contract-struct|import|hash/dc|define-custom-set-types|public-final|for/vector|for-label|prefix-in|for\\*/foldr/derived|define-unit-binding|object-contract|syntax-rules|augride|for\\*/mutable-seteq|quasisyntax|inner|for-syntax|overment|send/keyword-apply|generic|let\\*-values|->m|define-values|struct-copy|init-depend|struct/ctc|match-lambda|#%printing-module-begin|match\\*/derived|case->m|this|file|stream-cons|inspect|field|for/weak-set|struct\\*|gen:custom-write|thunk\\*|combine-in|unquote|for/lists|define/private|for\\*/foldr|define-unit/s|with-continuation-mark|begin|prefix|quote-syntax/prune|object/c|interface|match/derived|for/hasheqv|current-contract-region|define-compound-unit|override|define/public-final|recontract-out|let/cc|augride\\*|inherit|send|define-values/invoke-unit|for/mutable-seteq|#%datum|for/first|match-let\\*|invoke-unit/infer|define/contract|syntax/loc|for\\*/hasheqv|define-sequence-syntax|let/ec|for/product|for\\*/fold/derived|define-syntax-rule|lazy|unconstrained-domain->|augment-final|private|class|define-splicing-for-clause-syntax|for\\*/fold|prompt-tag/c|contract-out|match/values|public-final\\*|case-lambda|for/fold|unsyntax|for/set|begin0|#%require|time|public|define-struct|include|define-values/invoke-unit/infer|only-space-in|struct/c|only-meta-in|unit/new-import-export|place|begin-for-syntax|shared|inherit/super|quote|for/or|struct/contract|export|inherit/inner|struct-out|let-syntax|augment\\*|for\\*/vector|rename-in|match-let|define-unit|:do-in|~@|for\\*/weak-seteq|private\\*|and|except-in|log-fatal|gen:equal\\+hash|provide|require|thunk|invariant-assertion|define-match-expander|init-rest|->\\*|class/derived|super-new|for/fold/derived|for\\*/mutable-set|match-lambda\\*\\*|only|with-contract|~\\?|opt/c|let-values|delay/thread|->i|for/foldr|for-meta|only-in|send\\+|\\.\\.\\.|struct-guard/c|->\\*m|gen:set|struct/dc|define-syntaxes|if|parameterize|module\\*|module|send\\*|#%variable-reference|compound-unit/infer|#%plain-app|for/hash|contracted|case->|match|for\\*/lists|#%app|letrec-values|log-warning|super|define/augride|local-require|provide/contract|define-struct/contract|match-let-values|quote-syntax|for\\*/seteq|define-compound-unit/infer|parameterize\\*|values/drop|for/seteq|tag|stream|delay/idle|module\\+|define-custom-hash-types|cons/dc|define-module-boundary-contract|or|protect-out|define-opt/c|implies|letrec-syntaxes\\+values|for\\*/or|unsyntax-splicing|override-final\\*|for/async|parameterize-break|syntax|place\\*|for-space|quasiquote|with-handlers|delay/sync|define-unit-from-context|match-letrec|#%top|define-unit/contract|delay/name|new|field-bound\\?|letrec|class-field-mutator|with-syntax|flat-murec-contract|rename-super|local)$"
   ))

(list
  .
  (symbol) @function.builtin
  (#match? @function.builtin
   "^(<=/c|=/c|>=/c|add-between|and/c|any/c|apply|arity-at-least|arrow-contract-info|bad-number-of-results|between/c|blame-add-context|box-immutable/c|box/c|call-with-atomic-output-file|call-with-file-lock/timeout|call-with-input-file|call-with-input-file\\*|call-with-output-file|call-with-output-file\\*|channel/c|char-in/c|check-duplicates|cons/c|continuation-mark-key/c|contract-exercise|copy-directory/files|date|date\\*|delete-directory/files|dict->list|dict-can-functional-set\\?|dict-can-remove-keys\\?|dict-clear|dict-clear!|dict-copy|dict-count|dict-empty\\?|dict-for-each|dict-has-key\\?|dict-implements/c|dict-implements\\?|dict-iterate-first|dict-iterate-key|dict-iterate-next|dict-iterate-value|dict-keys|dict-map|dict-mutable\\?|dict-ref|dict-ref!|dict-remove|dict-remove!|dict-set|dict-set!|dict-set\\*|dict-set\\*!|dict-update|dict-update!|dict-values|dict\\?|display-lines|display-lines-to-file|display-to-file|dynamic->\\*|dynamic-place|dynamic-place\\*|eof-evt|exn|exn:break|exn:break:hang-up|exn:break:terminate|exn:fail|exn:fail:contract|exn:fail:contract:arity|exn:fail:contract:blame|exn:fail:contract:continuation|exn:fail:contract:divide-by-zero|exn:fail:contract:non-fixnum-result|exn:fail:contract:variable|exn:fail:filesystem|exn:fail:filesystem:errno|exn:fail:filesystem:exists|exn:fail:filesystem:missing-module|exn:fail:filesystem:version|exn:fail:network|exn:fail:network:errno|exn:fail:object|exn:fail:out-of-memory|exn:fail:read|exn:fail:read:eof|exn:fail:read:non-char|exn:fail:syntax|exn:fail:syntax:missing-module|exn:fail:syntax:unbound|exn:fail:unsupported|exn:fail:user|file->bytes|file->bytes-lines|file->lines|file->list|file->string|file->value|find-files|find-relative-path|first-or/c|flat-contract-with-explanation|get-preference|hash/c|in-bytes|in-bytes-lines|in-dict|in-dict-keys|in-dict-values|in-directory|in-ephemeron-hash|in-ephemeron-hash-keys|in-ephemeron-hash-pairs|in-ephemeron-hash-values|in-hash|in-hash-keys|in-hash-pairs|in-hash-values|in-immutable-hash|in-immutable-hash-keys|in-immutable-hash-pairs|in-immutable-hash-values|in-immutable-set|in-inclusive-range|in-indexed|in-input-port-bytes|in-input-port-chars|in-lines|in-list|in-mlist|in-mutable-hash|in-mutable-hash-keys|in-mutable-hash-pairs|in-mutable-hash-values|in-mutable-set|in-naturals|in-port|in-producer|in-range|in-set|in-slice|in-stream|in-string|in-syntax|in-value|in-vector|in-weak-hash|in-weak-hash-keys|in-weak-hash-pairs|in-weak-hash-values|in-weak-set|inclusive-range|input-port-append|instanceof/c|integer-in|list\\*of|list/c|listof|make-custom-hash|make-custom-hash-types|make-custom-set|make-custom-set-types|make-handle-get-preference-locked|make-immutable-custom-hash|make-limited-input-port|make-mutable-custom-set|make-object|make-temporary-directory|make-temporary-directory\\*|make-temporary-file|make-temporary-file\\*|make-weak-custom-hash|make-weak-custom-set|new-∀/c|new-∃/c|non-empty-listof|none/c|not/c|one-of/c|open-input-file|open-input-output-file|open-output-file|or/c|parameter/c|pathlist-closure|peek-bytes!-evt|peek-bytes-avail!-evt|peek-bytes-evt|peek-string!-evt|peek-string-evt|peeking-input-port|port->bytes|port->bytes-lines|port->lines|port->string|pretty-format|procedure-arity-includes/c|process|process\\*|process\\*/ports|process/ports|promise/c|property/c|raise-blame-error|raise-not-cons-blame-error|raise-syntax-error|range|read-bytes!-evt|read-bytes-avail!-evt|read-bytes-evt|read-bytes-line-evt|read-line-evt|read-string!-evt|read-string-evt|real-in|regexp-match\\*|regexp-match-evt|regexp-match-peek-positions\\*|regexp-match-positions\\*|relocate-input-port|relocate-output-port|remove-duplicates|set/c|sort|srcloc|string-join|string-len/c|string-normalize-spaces|string-replace|string-split|string-trim|symbols|syntax-binding-set-extend|syntax-deserialize|syntax-serialize|syntax/c|system|system\\*|system\\*/exit-code|system/exit-code|transplant-input-port|transplant-output-port|vector-immutable/c|vector-immutableof|vector-sort|vector-sort!|vector/c|vectorof|with-input-from-file|with-output-to-file|write-to-file|~.a|~.s|~.v|~a|~e|~r|~s|~v|\\*|\\*list/c|\\+|-|/|<|</c|<=|=|>|>/c|>=|abort-current-continuation|abs|absolute-path\\?|acos|add1|alarm-evt|andmap|angle|append|append\\*|append-map|argmax|argmin|arithmetic-shift|arity-at-least-value|arity-at-least\\?|arity-checking-wrapper|arity-includes\\?|arity=\\?|arrow-contract-info-accepts-arglist|arrow-contract-info-chaperone-procedure|arrow-contract-info-check-first-order|arrow-contract-info\\?|asin|assert-unreachable|assf|assoc|assq|assv|atan|banner|base->-doms/c|base->-rngs/c|base->\\?|bitwise-and|bitwise-bit-field|bitwise-bit-set\\?|bitwise-ior|bitwise-not|bitwise-xor|blame-add-car-context|blame-add-cdr-context|blame-add-missing-party|blame-add-nth-arg-context|blame-add-range-context|blame-add-unknown-context|blame-context|blame-contract|blame-fmt->-string|blame-missing-party\\?|blame-negative|blame-original\\?|blame-positive|blame-replace-negative|blame-replaced-negative\\?|blame-source|blame-swap|blame-swapped\\?|blame-update|blame-value|blame\\?|boolean=\\?|boolean\\?|bound-identifier=\\?|box|box-cas!|box-immutable|box\\?|break-enabled|break-parameterization\\?|break-thread|build-chaperone-contract-property|build-compound-type-name|build-contract-property|build-flat-contract-property|build-list|build-path|build-path/convention-type|build-string|build-vector|byte-pregexp|byte-pregexp\\?|byte-ready\\?|byte-regexp|byte-regexp\\?|byte\\?|bytes|bytes->immutable-bytes|bytes->list|bytes->path|bytes->path-element|bytes->string/latin-1|bytes->string/locale|bytes->string/utf-8|bytes-append|bytes-append\\*|bytes-close-converter|bytes-convert|bytes-convert-end|bytes-converter\\?|bytes-copy|bytes-copy!|bytes-environment-variable-name\\?|bytes-fill!|bytes-join|bytes-length|bytes-no-nuls\\?|bytes-open-converter|bytes-ref|bytes-set!|bytes-utf-8-index|bytes-utf-8-length|bytes-utf-8-ref|bytes<\\?|bytes=\\?|bytes>\\?|bytes\\?|caaaar|caaadr|caaar|caadar|caaddr|caadr|caar|cadaar|cadadr|cadar|caddar|cadddr|caddr|cadr|call-in-continuation|call-in-nested-thread|call-with-break-parameterization|call-with-composable-continuation|call-with-continuation-barrier|call-with-continuation-prompt|call-with-current-continuation|call-with-default-reading-parameterization|call-with-escape-continuation|call-with-exception-handler|call-with-immediate-continuation-mark|call-with-input-bytes|call-with-input-string|call-with-output-bytes|call-with-output-string|call-with-parameterization|call-with-semaphore|call-with-semaphore/enable-break|call-with-values|call/cc|call/ec|car|cartesian-product|cdaaar|cdaadr|cdaar|cdadar|cdaddr|cdadr|cdar|cddaar|cddadr|cddar|cdddar|cddddr|cdddr|cddr|cdr|ceiling|channel-get|channel-put|channel-put-evt|channel-put-evt\\?|channel-try-get|channel\\?|chaperone-box|chaperone-channel|chaperone-continuation-mark-key|chaperone-contract-property\\?|chaperone-contract\\?|chaperone-evt|chaperone-hash|chaperone-hash-set|chaperone-of\\?|chaperone-procedure|chaperone-procedure\\*|chaperone-prompt-tag|chaperone-struct|chaperone-struct-type|chaperone-vector|chaperone-vector\\*|chaperone\\?|char->integer|char-alphabetic\\?|char-blank\\?|char-ci<=\\?|char-ci<\\?|char-ci=\\?|char-ci>=\\?|char-ci>\\?|char-downcase|char-foldcase|char-general-category|char-graphic\\?|char-in|char-iso-control\\?|char-lower-case\\?|char-numeric\\?|char-punctuation\\?|char-ready\\?|char-symbolic\\?|char-title-case\\?|char-titlecase|char-upcase|char-upper-case\\?|char-utf-8-length|char-whitespace\\?|char<=\\?|char<\\?|char=\\?|char>=\\?|char>\\?|char\\?|check-duplicate-identifier|checked-procedure-check-and-extract|choice-evt|class->interface|class-info|class-seal|class-unseal|class\\?|cleanse-path|close-input-port|close-output-port|coerce-chaperone-contract|coerce-chaperone-contracts|coerce-contract|coerce-contract/f|coerce-contracts|coerce-flat-contract|coerce-flat-contracts|collect-garbage|collection-file-path|collection-path|combinations|combine-output|compile|compile-allow-set!-undefined|compile-context-preservation-enabled|compile-enforce-module-constants|compile-syntax|compile-target-machine\\?|compiled-expression-recompile|compiled-expression\\?|compiled-module-expression\\?|complete-path\\?|complex\\?|compose|compose1|conjoin|conjugate|cons|cons\\?|const|continuation-mark-key\\?|continuation-mark-set->context|continuation-mark-set->iterator|continuation-mark-set->list|continuation-mark-set->list\\*|continuation-mark-set-first|continuation-mark-set\\?|continuation-marks|continuation-prompt-available\\?|continuation-prompt-tag\\?|continuation\\?|contract-custom-write-property-proc|contract-equivalent\\?|contract-first-order|contract-first-order-passes\\?|contract-late-neg-projection|contract-name|contract-proc|contract-projection|contract-property\\?|contract-random-generate|contract-random-generate-env\\?|contract-random-generate-fail\\?|contract-random-generate-get-current-environment|contract-random-generate-stash|contract-random-generate/choose|contract-stronger\\?|contract-struct-exercise|contract-struct-generate|contract-struct-late-neg-projection|contract-struct-list-contract\\?|contract-val-first-projection|contract\\?|convert-stream|copy-file|copy-port|cos|cosh|count|current-blame-format|current-break-parameterization|current-code-inspector|current-command-line-arguments|current-compile|current-compile-realm|current-compile-target-machine|current-compiled-file-roots|current-continuation-marks|current-custodian|current-directory|current-directory-for-user|current-drive|current-environment-variables|current-error-message-adjuster|current-error-port|current-eval|current-evt-pseudo-random-generator|current-force-delete-permissions|current-future|current-gc-milliseconds|current-get-interaction-evt|current-get-interaction-input-port|current-inexact-milliseconds|current-inexact-monotonic-milliseconds|current-input-port|current-inspector|current-library-collection-links|current-library-collection-paths|current-load|current-load-extension|current-load-relative-directory|current-load/use-compiled|current-locale|current-logger|current-memory-use|current-milliseconds|current-module-declare-name|current-module-declare-source|current-module-name-resolver|current-module-path-for-load|current-namespace|current-output-port|current-parameterization|current-plumber|current-preserved-thread-cell-values|current-print|current-process-milliseconds|current-prompt-read|current-pseudo-random-generator|current-read-interaction|current-reader-guard|current-readtable|current-seconds|current-security-guard|current-subprocess-custodian-mode|current-subprocess-keep-file-descriptors|current-thread|current-thread-group|current-thread-initial-stack-size|current-write-relative-directory|curry|curryr|custodian-box-value|custodian-box\\?|custodian-limit-memory|custodian-managed-list|custodian-memory-accounting-available\\?|custodian-require-memory|custodian-shut-down\\?|custodian-shutdown-all|custodian\\?|custom-print-quotable-accessor|custom-print-quotable\\?|custom-write-accessor|custom-write-property-proc|custom-write\\?|date\\*-nanosecond|date\\*-time-zone-name|date\\*\\?|date-day|date-dst\\?|date-hour|date-minute|date-month|date-second|date-time-zone-offset|date-week-day|date-year|date-year-day|date\\?|datum->syntax|datum-intern-literal|default-continuation-prompt-tag|degrees->radians|delete-directory|delete-file|denominator|dict-iter-contract|dict-key-contract|dict-value-contract|directory-exists\\?|directory-list|disjoin|display|displayln|double-flonum\\?|drop|drop-common-prefix|drop-right|dropf|dropf-right|dump-memory-stats|dup-input-port|dup-output-port|dynamic-get-field|dynamic-object/c|dynamic-require|dynamic-require-for-syntax|dynamic-send|dynamic-set-field!|dynamic-wind|eighth|empty\\?|environment-variables-copy|environment-variables-names|environment-variables-ref|environment-variables-set!|environment-variables\\?|eof-object\\?|ephemeron-value|ephemeron\\?|eprintf|eq-contract-val|eq-contract\\?|eq-hash-code|eq\\?|equal-contract-val|equal-contract\\?|equal-hash-code|equal-secondary-hash-code|equal\\?|equal\\?/recur|eqv-hash-code|eqv\\?|error|error-contract->adjusted-string|error-display-handler|error-escape-handler|error-message->adjusted-string|error-print-context-length|error-print-source-location|error-print-width|error-syntax->string-handler|error-value->string-handler|eval|eval-jit-enabled|eval-syntax|even\\?|evt/c|evt\\?|exact->inexact|exact-ceiling|exact-floor|exact-integer\\?|exact-nonnegative-integer\\?|exact-positive-integer\\?|exact-round|exact-truncate|exact\\?|executable-yield-handler|exit|exit-handler|exn-continuation-marks|exn-message|exn:break-continuation|exn:break:hang-up\\?|exn:break:terminate\\?|exn:break\\?|exn:fail:contract:arity\\?|exn:fail:contract:blame-object|exn:fail:contract:blame\\?|exn:fail:contract:continuation\\?|exn:fail:contract:divide-by-zero\\?|exn:fail:contract:non-fixnum-result\\?|exn:fail:contract:variable-id|exn:fail:contract:variable\\?|exn:fail:contract\\?|exn:fail:filesystem:errno-errno|exn:fail:filesystem:errno\\?|exn:fail:filesystem:exists\\?|exn:fail:filesystem:missing-module-path|exn:fail:filesystem:missing-module\\?|exn:fail:filesystem:version\\?|exn:fail:filesystem\\?|exn:fail:network:errno-errno|exn:fail:network:errno\\?|exn:fail:network\\?|exn:fail:object\\?|exn:fail:out-of-memory\\?|exn:fail:read-srclocs|exn:fail:read:eof\\?|exn:fail:read:non-char\\?|exn:fail:read\\?|exn:fail:syntax-exprs|exn:fail:syntax:missing-module-path|exn:fail:syntax:missing-module\\?|exn:fail:syntax:unbound\\?|exn:fail:syntax\\?|exn:fail:unsupported\\?|exn:fail:user\\?|exn:fail\\?|exn:misc:match\\?|exn:missing-module-accessor|exn:missing-module\\?|exn:srclocs-accessor|exn:srclocs\\?|exn\\?|exp|expand|expand-once|expand-syntax|expand-syntax-once|expand-syntax-to-top-form|expand-to-top-form|expand-user-path|explode-path|expt|false\\?|field-names|fifth|file-exists\\?|file-name-from-path|file-or-directory-identity|file-or-directory-modify-seconds|file-or-directory-permissions|file-or-directory-stat|file-or-directory-type|file-position|file-position\\*|file-size|file-stream-buffer-mode|file-stream-port\\?|file-truncate|filename-extension|filesystem-change-evt|filesystem-change-evt-cancel|filesystem-change-evt\\?|filesystem-root-list|filter|filter-map|filter-not|filter-read-input-port|find-compiled-file-roots|find-executable-path|find-library-collection-links|find-library-collection-paths|find-system-path|findf|first|fixnum\\?|flat-contract|flat-contract-predicate|flat-contract-property\\?|flat-contract\\?|flat-named-contract|flatten|floating-point-bytes->real|flonum\\?|floor|flush-output|fold-files|foldl|foldr|for-each|force|format|fourth|fprintf|free-identifier=\\?|free-label-identifier=\\?|free-template-identifier=\\?|free-transformer-identifier=\\?|fsemaphore-count|fsemaphore-post|fsemaphore-try-wait\\?|fsemaphore-wait|fsemaphore\\?|future|future\\?|futures-enabled\\?|gcd|generate-member-key|generate-temporaries|generic-set\\?|generic\\?|gensym|get-output-bytes|get-output-string|get/build-late-neg-projection|get/build-val-first-projection|getenv|global-port-print-handler|group-by|guard-evt|handle-evt|handle-evt\\?|has-blame\\?|has-contract\\?|hash|hash->list|hash-clear|hash-clear!|hash-copy|hash-copy-clear|hash-count|hash-empty\\?|hash-ephemeron\\?|hash-eq\\?|hash-equal\\?|hash-eqv\\?|hash-for-each|hash-has-key\\?|hash-iterate-first|hash-iterate-key|hash-iterate-key\\+value|hash-iterate-next|hash-iterate-pair|hash-iterate-value|hash-keys|hash-keys-subset\\?|hash-map|hash-placeholder\\?|hash-ref|hash-ref!|hash-ref-key|hash-remove|hash-remove!|hash-set|hash-set!|hash-set\\*|hash-set\\*!|hash-strong\\?|hash-update|hash-update!|hash-values|hash-weak\\?|hash\\?|hasheq|hasheqv|identifier-binding|identifier-binding-portal-syntax|identifier-binding-symbol|identifier-distinct-binding|identifier-label-binding|identifier-prune-lexical-context|identifier-prune-to-source-module|identifier-remove-from-definition-context|identifier-template-binding|identifier-transformer-binding|identifier\\?|identity|if/c|imag-part|immutable\\?|impersonate-box|impersonate-channel|impersonate-continuation-mark-key|impersonate-hash|impersonate-hash-set|impersonate-procedure|impersonate-procedure\\*|impersonate-prompt-tag|impersonate-struct|impersonate-vector|impersonate-vector\\*|impersonator-contract\\?|impersonator-ephemeron|impersonator-of\\?|impersonator-property-accessor-procedure\\?|impersonator-property\\?|impersonator\\?|implementation\\?|implementation\\?/c|in-combinations|in-cycle|in-dict-pairs|in-parallel|in-permutations|in-sequences|in-values\\*-sequence|in-values-sequence|index-of|index-where|indexes-of|indexes-where|inexact->exact|inexact-real\\?|inexact\\?|infinite\\?|input-port\\?|inspector-superior\\?|inspector\\?|integer->char|integer->integer-bytes|integer-bytes->integer|integer-length|integer-sqrt|integer-sqrt/remainder|integer\\?|interface->method-names|interface-extension\\?|interface\\?|internal-definition-context-add-scopes|internal-definition-context-binding-identifiers|internal-definition-context-introduce|internal-definition-context-seal|internal-definition-context-splice-binding-identifier|internal-definition-context\\?|is-a\\?|is-a\\?/c|keyword->string|keyword-apply|keyword-apply/dict|keyword<\\?|keyword\\?|keywords-match|kill-thread|last|last-pair|lcm|length|liberal-define-context\\?|link-exists\\?|list|list\\*|list->bytes|list->mutable-set|list->mutable-seteq|list->mutable-seteqv|list->set|list->seteq|list->seteqv|list->string|list->vector|list->weak-set|list->weak-seteq|list->weak-seteqv|list-contract\\?|list-prefix\\?|list-ref|list-set|list-tail|list-update|list\\?|listen-port-number\\?|load|load-extension|load-on-demand-enabled|load-relative|load-relative-extension|load/cd|load/use-compiled|local-expand|local-expand/capture-lifts|local-transformer-expand|local-transformer-expand/capture-lifts|locale-string-encoding|log|log-all-levels|log-level-evt|log-level\\?|log-max-level|log-message|log-receiver\\?|logger-name|logger\\?|magnitude|make-arity-at-least|make-base-empty-namespace|make-base-namespace|make-bytes|make-channel|make-chaperone-contract|make-continuation-mark-key|make-continuation-prompt-tag|make-contract|make-custodian|make-custodian-box|make-date|make-date\\*|make-derived-parameter|make-directory|make-directory\\*|make-do-sequence|make-empty-namespace|make-environment-variables|make-ephemeron|make-ephemeron-hash|make-ephemeron-hasheq|make-ephemeron-hasheqv|make-exn|make-exn:break|make-exn:break:hang-up|make-exn:break:terminate|make-exn:fail|make-exn:fail:contract|make-exn:fail:contract:arity|make-exn:fail:contract:blame|make-exn:fail:contract:continuation|make-exn:fail:contract:divide-by-zero|make-exn:fail:contract:non-fixnum-result|make-exn:fail:contract:variable|make-exn:fail:filesystem|make-exn:fail:filesystem:errno|make-exn:fail:filesystem:exists|make-exn:fail:filesystem:missing-module|make-exn:fail:filesystem:version|make-exn:fail:network|make-exn:fail:network:errno|make-exn:fail:object|make-exn:fail:out-of-memory|make-exn:fail:read|make-exn:fail:read:eof|make-exn:fail:read:non-char|make-exn:fail:syntax|make-exn:fail:syntax:missing-module|make-exn:fail:syntax:unbound|make-exn:fail:unsupported|make-exn:fail:user|make-file-or-directory-link|make-flat-contract|make-fsemaphore|make-generic|make-hash|make-hash-placeholder|make-hasheq|make-hasheq-placeholder|make-hasheqv|make-hasheqv-placeholder|make-immutable-hash|make-immutable-hasheq|make-immutable-hasheqv|make-impersonator-property|make-input-port|make-input-port/read-to-peek|make-inspector|make-interned-syntax-introducer|make-keyword-procedure|make-known-char-range-list|make-list|make-lock-file-name|make-log-receiver|make-logger|make-mixin-contract|make-none/c|make-output-port|make-parameter|make-parent-directory\\*|make-phantom-bytes|make-pipe|make-pipe-with-specials|make-placeholder|make-plumber|make-polar|make-portal-syntax|make-prefab-struct|make-primitive-class|make-proj-contract|make-pseudo-random-generator|make-reader-graph|make-readtable|make-rectangular|make-rename-transformer|make-resolved-module-path|make-security-guard|make-semaphore|make-set!-transformer|make-shared-bytes|make-sibling-inspector|make-special-comment|make-srcloc|make-string|make-struct-field-accessor|make-struct-field-mutator|make-struct-type|make-struct-type-property|make-syntax-delta-introducer|make-syntax-introducer|make-tentative-pretty-print-output-port|make-thread-cell|make-thread-group|make-vector|make-weak-box|make-weak-hash|make-weak-hasheq|make-weak-hasheqv|make-will-executor|map|match-equality-test|matches-arity-exactly\\?|max|mcar|mcdr|mcons|member|member-name-key-hash-code|member-name-key=\\?|member-name-key\\?|memf|memory-order-acquire|memory-order-release|memq|memv|merge-input|method-in-interface\\?|min|module->exports|module->imports|module->indirect-exports|module->language-info|module->namespace|module->realm|module-compiled-cross-phase-persistent\\?|module-compiled-exports|module-compiled-imports|module-compiled-indirect-exports|module-compiled-language-info|module-compiled-name|module-compiled-realm|module-compiled-submodules|module-declared\\?|module-path-index-join|module-path-index-resolve|module-path-index-split|module-path-index-submodule|module-path-index\\?|module-path\\?|module-predefined\\?|module-provide-protected\\?|modulo|mpair\\?|mutable-set|mutable-seteq|mutable-seteqv|n->th|nack-guard-evt|namespace-anchor->empty-namespace|namespace-anchor->namespace|namespace-anchor\\?|namespace-attach-module|namespace-attach-module-declaration|namespace-base-phase|namespace-call-with-registry-lock|namespace-mapped-symbols|namespace-module-identifier|namespace-module-registry|namespace-require|namespace-require/constant|namespace-require/copy|namespace-require/expansion-time|namespace-set-variable-value!|namespace-symbol->identifier|namespace-syntax-introduce|namespace-undefine-variable!|namespace-unprotect-module|namespace-variable-value|namespace\\?|nan\\?|natural-number/c|natural\\?|negate|negative-integer\\?|negative\\?|newline|ninth|non-empty-string\\?|nonnegative-integer\\?|nonpositive-integer\\?|normal-case-path|normalize-arity|normalize-path|normalized-arity\\?|not|null\\?|number->string|number\\?|numerator|object->vector|object-info|object-interface|object-method-arity-includes\\?|object-name|object-or-false=\\?|object=-hash-code|object=\\?|object\\?|odd\\?|open-input-bytes|open-input-string|open-output-bytes|open-output-nowhere|open-output-string|order-of-magnitude|ormap|output-port\\?|pair\\?|parameter-procedure=\\?|parameter\\?|parameterization\\?|parse-command-line|partition|path->bytes|path->complete-path|path->directory-path|path->string|path-add-extension|path-add-suffix|path-convention-type|path-element->bytes|path-element->string|path-element\\?|path-for-some-system\\?|path-get-extension|path-has-extension\\?|path-list-string->path-list|path-only|path-replace-extension|path-replace-suffix|path-string\\?|path<\\?|path\\?|peek-byte|peek-byte-or-special|peek-bytes|peek-bytes!|peek-bytes-avail!|peek-bytes-avail!\\*|peek-bytes-avail!/enable-break|peek-char|peek-char-or-special|peek-string|peek-string!|permutations|phantom-bytes\\?|pipe-content-length|place-break|place-channel|place-channel-get|place-channel-put|place-channel-put/get|place-channel\\?|place-dead-evt|place-enabled\\?|place-kill|place-location\\?|place-message-allowed\\?|place-wait|place\\?|placeholder-get|placeholder-set!|placeholder\\?|plumber-add-flush!|plumber-flush-all|plumber-flush-handle-remove!|plumber-flush-handle\\?|plumber\\?|poll-guard-evt|port->list|port-closed-evt|port-closed\\?|port-commit-peeked|port-count-lines!|port-count-lines-enabled|port-counts-lines\\?|port-display-handler|port-file-identity|port-file-unlock|port-next-location|port-number\\?|port-print-handler|port-progress-evt|port-provides-progress-evts\\?|port-read-handler|port-try-file-lock\\?|port-waiting-peer\\?|port-write-handler|port-writes-atomic\\?|port-writes-special\\?|port\\?|portal-syntax-content|portal-syntax\\?|positive-integer\\?|positive\\?|prefab-key->struct-type|prefab-key\\?|prefab-struct-key|preferences-lock-file-mode|pregexp|pregexp\\?|pretty-display|pretty-print|pretty-print-.-symbol-without-bars|pretty-print-abbreviate-read-macros|pretty-print-columns|pretty-print-current-style-table|pretty-print-depth|pretty-print-exact-as-decimal|pretty-print-extend-style-table|pretty-print-handler|pretty-print-newline|pretty-print-post-print-hook|pretty-print-pre-print-hook|pretty-print-print-hook|pretty-print-print-line|pretty-print-remap-stylable|pretty-print-show-inexactness|pretty-print-size-hook|pretty-print-style-table\\?|pretty-printing|pretty-write|primitive-closure\\?|primitive-result-arity|primitive\\?|print|print-as-expression|print-boolean-long-form|print-box|print-graph|print-hash-table|print-mpair-curly-braces|print-pair-curly-braces|print-reader-abbreviations|print-struct|print-syntax-width|print-unreadable|print-value-columns|print-vector-length|printable/c|printf|println|procedure->method|procedure-arity|procedure-arity-includes\\?|procedure-arity-mask|procedure-arity\\?|procedure-closure-contents-eq\\?|procedure-extract-target|procedure-impersonator\\*\\?|procedure-keywords|procedure-realm|procedure-reduce-arity|procedure-reduce-arity-mask|procedure-reduce-keyword-arity|procedure-reduce-keyword-arity-mask|procedure-rename|procedure-result-arity|procedure-specialize|procedure-struct-type\\?|procedure\\?|processor-count|progress-evt\\?|promise-forced\\?|promise-running\\?|promise/name\\?|promise\\?|prop:arrow-contract-get-info|prop:arrow-contract\\?|prop:orc-contract-get-subcontracts|prop:orc-contract\\?|prop:recursive-contract-unroll|prop:recursive-contract\\?|proper-subset\\?|pseudo-random-generator->vector|pseudo-random-generator-vector\\?|pseudo-random-generator\\?|put-preferences|putenv|quotient|quotient/remainder|radians->degrees|raise|raise-argument-error|raise-argument-error\\*|raise-arguments-error|raise-arguments-error\\*|raise-arity-error|raise-arity-error\\*|raise-arity-mask-error|raise-arity-mask-error\\*|raise-contract-error|raise-mismatch-error|raise-range-error|raise-range-error\\*|raise-result-arity-error|raise-result-arity-error\\*|raise-result-error|raise-result-error\\*|raise-type-error|raise-user-error|random|random-seed|rational\\?|rationalize|read|read-accept-bar-quote|read-accept-box|read-accept-compiled|read-accept-dot|read-accept-graph|read-accept-infix-dot|read-accept-lang|read-accept-quasiquote|read-accept-reader|read-byte|read-byte-or-special|read-bytes|read-bytes!|read-bytes-avail!|read-bytes-avail!\\*|read-bytes-avail!/enable-break|read-bytes-line|read-case-sensitive|read-cdot|read-char|read-char-or-special|read-curly-brace-as-paren|read-curly-brace-with-tag|read-decimal-as-inexact|read-eval-print-loop|read-installation-configuration-table|read-language|read-line|read-on-demand-source|read-single-flonum|read-square-bracket-as-paren|read-square-bracket-with-tag|read-string|read-string!|read-syntax|read-syntax-accept-graph|read-syntax/recursive|read/recursive|readtable-mapping|readtable\\?|real->decimal-string|real->double-flonum|real->floating-point-bytes|real->single-flonum|real-part|real\\?|reencode-input-port|reencode-output-port|regexp|regexp-match|regexp-match-exact\\?|regexp-match-peek|regexp-match-peek-immediate|regexp-match-peek-positions|regexp-match-peek-positions-immediate|regexp-match-peek-positions-immediate/end|regexp-match-peek-positions/end|regexp-match-positions|regexp-match-positions/end|regexp-match/end|regexp-match\\?|regexp-max-lookbehind|regexp-quote|regexp-replace|regexp-replace\\*|regexp-replace-quote|regexp-replaces|regexp-split|regexp-try-match|regexp\\?|relative-path\\?|remainder|remf|remf\\*|remove|remove\\*|remq|remq\\*|remv|remv\\*|rename-contract|rename-file-or-directory|rename-transformer-target|rename-transformer\\?|replace-evt|reroot-path|resolve-path|resolved-module-path-name|resolved-module-path\\?|rest|reverse|round|second|seconds->date|security-guard\\?|semaphore-peek-evt|semaphore-peek-evt\\?|semaphore-post|semaphore-try-wait\\?|semaphore-wait|semaphore-wait/enable-break|semaphore\\?|sequence->list|sequence->stream|sequence-add-between|sequence-andmap|sequence-append|sequence-count|sequence-filter|sequence-fold|sequence-for-each|sequence-generate|sequence-generate\\*|sequence-length|sequence-map|sequence-ormap|sequence-ref|sequence-tail|sequence/c|sequence\\?|set|set!-transformer-procedure|set!-transformer\\?|set->list|set->stream|set-add|set-add!|set-box!|set-box\\*!|set-clear|set-clear!|set-copy|set-copy-clear|set-count|set-empty\\?|set-eq\\?|set-equal\\?|set-eqv\\?|set-first|set-for-each|set-implements/c|set-implements\\?|set-intersect|set-intersect!|set-map|set-mcar!|set-mcdr!|set-member\\?|set-mutable\\?|set-phantom-bytes!|set-port-next-location!|set-remove|set-remove!|set-rest|set-subtract|set-subtract!|set-symmetric-difference|set-symmetric-difference!|set-union|set-union!|set-weak\\?|set=\\?|set\\?|seteq|seteqv|seventh|sgn|sha1-bytes|sha224-bytes|sha256-bytes|shared-bytes|shell-execute|shrink-path-wrt|shuffle|simple-form-path|simplify-path|sin|single-flonum-available\\?|single-flonum\\?|sinh|sixth|skip-projection-wrapper\\?|sleep|some-system-path->string|special-comment-value|special-comment\\?|special-filter-input-port|split-at|split-at-right|split-common-prefix|split-path|splitf-at|splitf-at-right|sqr|sqrt|srcloc->string|srcloc-column|srcloc-line|srcloc-position|srcloc-source|srcloc-span|srcloc\\?|stop-after|stop-before|stream->list|stream-add-between|stream-andmap|stream-append|stream-count|stream-empty\\?|stream-filter|stream-first|stream-fold|stream-for-each|stream-force|stream-length|stream-map|stream-ormap|stream-ref|stream-rest|stream-tail|stream-take|stream/c|stream\\?|string|string->bytes/latin-1|string->bytes/locale|string->bytes/utf-8|string->immutable-string|string->keyword|string->list|string->number|string->path|string->path-element|string->some-system-path|string->symbol|string->uninterned-symbol|string->unreadable-symbol|string-append|string-append\\*|string-append-immutable|string-ci<=\\?|string-ci<\\?|string-ci=\\?|string-ci>=\\?|string-ci>\\?|string-contains\\?|string-copy|string-copy!|string-downcase|string-environment-variable-name\\?|string-fill!|string-foldcase|string-length|string-locale-ci<\\?|string-locale-ci=\\?|string-locale-ci>\\?|string-locale-downcase|string-locale-upcase|string-locale<\\?|string-locale=\\?|string-locale>\\?|string-no-nuls\\?|string-normalize-nfc|string-normalize-nfd|string-normalize-nfkc|string-normalize-nfkd|string-port\\?|string-prefix\\?|string-ref|string-set!|string-suffix\\?|string-titlecase|string-upcase|string-utf-8-length|string<=\\?|string<\\?|string=\\?|string>=\\?|string>\\?|string\\?|struct->vector|struct-accessor-procedure\\?|struct-constructor-procedure\\?|struct-info|struct-mutator-procedure\\?|struct-predicate-procedure\\?|struct-type-authentic\\?|struct-type-info|struct-type-make-constructor|struct-type-make-predicate|struct-type-property-accessor-procedure\\?|struct-type-property-predicate-procedure\\?|struct-type-property/c|struct-type-property\\?|struct-type-sealed\\?|struct-type\\?|struct\\?|sub1|subbytes|subclass\\?|subclass\\?/c|subprocess|subprocess-group-enabled|subprocess-kill|subprocess-pid|subprocess-status|subprocess-wait|subprocess\\?|subset\\?|substring|suggest/c|symbol->string|symbol-interned\\?|symbol-unreadable\\?|symbol<\\?|symbol=\\?|symbol\\?|sync|sync/enable-break|sync/timeout|sync/timeout/enable-break|syntax->datum|syntax->list|syntax-arm|syntax-binding-set|syntax-binding-set->syntax|syntax-binding-set\\?|syntax-column|syntax-debug-info|syntax-disarm|syntax-e|syntax-line|syntax-local-apply-transformer|syntax-local-bind-syntaxes|syntax-local-certifier|syntax-local-context|syntax-local-expand-expression|syntax-local-get-shadower|syntax-local-identifier-as-binding|syntax-local-introduce|syntax-local-lift-context|syntax-local-lift-expression|syntax-local-lift-module|syntax-local-lift-module-end-declaration|syntax-local-lift-provide|syntax-local-lift-require|syntax-local-lift-values-expression|syntax-local-make-definition-context|syntax-local-make-delta-introducer|syntax-local-module-defined-identifiers|syntax-local-module-exports|syntax-local-module-interned-scope-symbols|syntax-local-module-required-identifiers|syntax-local-name|syntax-local-phase-level|syntax-local-submodules|syntax-local-transforming-module-provides\\?|syntax-local-value|syntax-local-value/immediate|syntax-original\\?|syntax-position|syntax-property|syntax-property-preserved\\?|syntax-property-remove|syntax-property-symbol-keys|syntax-protect|syntax-rearm|syntax-recertify|syntax-shift-phase-level|syntax-source|syntax-source-module|syntax-span|syntax-taint|syntax-tainted\\?|syntax-track-origin|syntax-transforming-module-expression\\?|syntax-transforming-with-lifts\\?|syntax-transforming\\?|syntax\\?|system-big-endian\\?|system-idle-evt|system-language\\+country|system-library-subpath|system-path-convention-type|system-type|tail-marks-match\\?|take|take-common-prefix|take-right|takef|takef-right|tan|tanh|tcp-abandon-port|tcp-accept|tcp-accept-evt|tcp-accept-ready\\?|tcp-accept/enable-break|tcp-addresses|tcp-close|tcp-connect|tcp-connect/enable-break|tcp-listen|tcp-listener\\?|tcp-port\\?|tentative-pretty-print-port-cancel|tentative-pretty-print-port-transfer|tenth|terminal-port\\?|third|thread|thread-cell-ref|thread-cell-set!|thread-cell-values\\?|thread-cell\\?|thread-dead-evt|thread-dead\\?|thread-group\\?|thread-receive|thread-receive-evt|thread-resume|thread-resume-evt|thread-rewind-receive|thread-running\\?|thread-send|thread-suspend|thread-suspend-evt|thread-try-receive|thread-wait|thread/suspend-to-kill|thread\\?|time-apply|touch|truncate|udp-addresses|udp-bind!|udp-bound\\?|udp-close|udp-connect!|udp-connected\\?|udp-multicast-interface|udp-multicast-join-group!|udp-multicast-leave-group!|udp-multicast-loopback\\?|udp-multicast-set-interface!|udp-multicast-set-loopback!|udp-multicast-set-ttl!|udp-multicast-ttl|udp-open-socket|udp-receive!|udp-receive!\\*|udp-receive!-evt|udp-receive!/enable-break|udp-receive-ready-evt|udp-send|udp-send\\*|udp-send-evt|udp-send-ready-evt|udp-send-to|udp-send-to\\*|udp-send-to-evt|udp-send-to/enable-break|udp-send/enable-break|udp-set-receive-buffer-size!|udp-set-ttl!|udp-ttl|udp\\?|unbox|unbox\\*|uncaught-exception-handler|unit\\?|unquoted-printing-string|unquoted-printing-string-value|unquoted-printing-string\\?|unsupplied-arg\\?|use-collection-link-paths|use-compiled-file-check|use-compiled-file-paths|use-user-specific-search-paths|value-blame|value-contract|values|variable-reference->empty-namespace|variable-reference->module-base-phase|variable-reference->module-declaration-inspector|variable-reference->module-path-index|variable-reference->module-source|variable-reference->namespace|variable-reference->phase|variable-reference->resolved-module-path|variable-reference-constant\\?|variable-reference-from-unsafe\\?|variable-reference\\?|vector|vector\\*-length|vector\\*-ref|vector\\*-set!|vector->immutable-vector|vector->list|vector->pseudo-random-generator|vector->pseudo-random-generator!|vector->values|vector-append|vector-argmax|vector-argmin|vector-cas!|vector-copy|vector-copy!|vector-count|vector-drop|vector-drop-right|vector-empty\\?|vector-fill!|vector-filter|vector-filter-not|vector-immutable|vector-length|vector-map|vector-map!|vector-member|vector-memq|vector-memv|vector-ref|vector-set!|vector-set\\*!|vector-set-performance-stats!|vector-split-at|vector-split-at-right|vector-take|vector-take-right|vector\\?|version|void|void\\?|weak-box-value|weak-box\\?|weak-set|weak-seteq|weak-seteqv|will-execute|will-executor\\?|will-register|will-try-execute|with-input-from-bytes|with-input-from-string|with-output-to-bytes|with-output-to-string|would-be-future|wrap-evt|write|write-byte|write-bytes|write-bytes-avail|write-bytes-avail\\*|write-bytes-avail-evt|write-bytes-avail/enable-break|write-char|write-special|write-special-avail\\*|write-special-evt|write-string|writeln|xor|zero\\?)$"
   ))

(list
  .
  (symbol) @_f
  .
  (list
    .
    (symbol)+ @variable)
  (#match? @_f "^(lambda|λ|define-values|define-syntaxes|define-values-for-export|define-values-for-syntax)$"))

((symbol) @comment
 (#match? @comment "^#[cC][iIsS]$"))

(list
  .
  (symbol) @_def
  .
  (list
    .
    (symbol) @function
    .
    (symbol)* @variable.parameter)
  (#match? @_def "^(define|define/contract|define-syntax-rule)$"))

(list
  .
  (symbol) @_def
  .
  (list
    .
    (symbol)* @variable.parameter)
  (#match? @_def "^(lambda|λ)$"))

(list
  .
  (symbol) @_def
  .
  (symbol) @variable.parameter
  (#match? @_def "^(lambda|λ)$"))

(symbol) @variable

